Allows network of nodes to communicate using pubsub.
A node is a participant in the network graph, which uses a client library to communicate with other nodes.
Nodes can publish to named topics to deliver data to other nodes, or subscribe to topics to receive data from other nodes. They can also act as a service client/server to have another node perform a computation on their behalf/do a computation on behalf of another node.
Long-running computations are done as action client/server instead of service client/server.
Nodes can provide configurable parameters to change run-time behaviour.
Connections between nodes are established through a distributed discovery process.
Nodes periodically advertise their presence so that other nodes may connect to them. They also notify other nodes when they go offline.
ROS applications communicate through interfaces of one of three types: topics, services, or actions. ROS uses a definition language called IDL to define these interfaces:
.msg
files describe the fields of a ROS message..srv
files describe a service. They are composed of two parts: a request and a response. The request and response are message definitions..action
files describe an action, they are composed of three parts: a goal, a result, and feedback. Each part is a message definition.Messages are a fire-and-forget way of sending data to other nodes without receiving a response. Messages have fields, which may have a default value, and constants.